const express = require('express')
const app = express()

// 跨域
const cors = require('cors')
app.use(cors())

// 在解析token之前把文件upload的文件托管静态资源
app.use('/uploads',express.static('./uploads'))
// const db = require('./databases/index')
// const utility = require('utility')
// 生成token
// const jwt=require('jsonwebtoken') 
// 解析token 身份验证使用中间件 书写在解析请求体之前
const expressJWT = require('express-jwt')
app.use(expressJWT({ secret: 'dijia' }
    // 省略加密的配置
    // 忽略特殊路径不需要token  unless()里面是配置对象属性为path值为数组,匹配一个正则
).unless({ path: [/^\/api\//] }))

app.use(express.urlencoded({ extended: false }))

const loginRouter = require('./router/login')
app.use('/api', loginRouter)
// 测试解析token 获取用户信息 解析成功后再req.user上
// app.get('/my/userinfo', (req, res) => {
//     console.log(req.user);
//     res.send('获取用户信息成功！')
// })
const userRouter =  require('./router/user')
app.use('/my',userRouter)


const cateRouter= require('./router/cate')
app.use('/my/article',cateRouter)


const articleRouter =require('./router/article')
app.use('/my/article',articleRouter)





// 错误级别中间件 避免程序错误 鞋子啊所有中间件之前
app.use((err, req, res, next) => {
    // console.log(err.name);UnauthorizedError
    if (err.name === 'UnauthorizedError') {
        err.message = '身份认证失败！'
    }
    res.send({
        status: 1,
        message: err.message
    })
})
app.listen(8888, () => {
    console.log('http://127.0.0.1:8888');
})